The installation of software applications plays a key role in the management of data processing systems. For example, this is a very time consuming activity in large organizations embracing thousands of computer, wherein the configuration of the computers is periodically updated in order to be abreast of the information technology development or to comply with organizational changes; typically, the update of the configuration of each computer involves installing and disinstalling software products or upgrading the software products already available to new versions thereof. In the following, the activities relating to the installation, the disinstallation or the upgrade of the software products will be generically denoted as installation process; however, it should be understood that the term installation as used hereinafter refers to any activities causing the addition or the removal of software features (unless otherwise specified).
The installation of each software product requires the building of a corresponding package. Several installation authoring tools have been proposed in the last years to assist a software developer to create professional looking, reliable and flexible installation packages. All the authoring tools known in the art (such as “InstallShield”, described in Learning Multi-Platform Edition Training Manual, Robert M. Dickau-TRNMPLM01-1602) are based on a declarative model. In other words, the developer is required to declare any installation element to be embedded into the package (for use during the installation process). For example, a product tree is used to declare the functions implementing the installation of each feature of the software product; a wizard tree is used to declare a sequence of panels for controlling the interaction with an end-user during the installation process.
A drawback of the authoring tools known in the art is that those elements must be declared explicitly when the installation package is built. Therefore, the operations supported by the installation package (and that can be performed during the installation process) are defined statically and cannot be changed at run-time.
The definition of the installation package (even for a quite simple software product) then requires a high number of elements for each possible combination of installation operations; as a consequence, the installation package becomes very complex, cumbersome and difficult to maintain.
In any case, the proposed authoring tools cannot be used in dynamic environments; indeed, in these environments it is not possible to make any assumptions (when the installation packages are built) about the structure of the data processing systems wherein the software products will be installed. This problem is particularly acute when the data processing systems have a distributed architecture, because their actual topology is discovered only at run-time.
An additional limitation of the authoring tools known in the art is that the whole installation process is typically aborted in response to the failure of a single installation operation. This behavior is unacceptable when dealing with the installation of complex software applications, which require the execution of a high number of installation operations on different computers.